const { app, BrowserWindow, screen, Menu, MenuItem } = require('electron');
const path = require('path');
let win;

function createWindow() {
  // 获取所有屏幕的信息
  const displays = screen.getAllDisplays();
  // 选择你想要显示窗口的屏幕
  // 例如，选择第一个屏幕 displays[0] 或第二个屏幕 displays[1]
  // 遍历并打印每个屏幕的信息
  let primaryDisplay = displays[0];
  for (const display of displays) {
    console.log(`ID: ${display.id}`);
    console.log(`Position: (${display.bounds.x}, ${display.bounds.y})`);
    console.log(`Size: ${display.bounds.width}x${display.bounds.height}`);
    console.log(`Scale Factor: ${display.scaleFactor}`);
    console.log('-----------------------');
    if (display.bounds.width === 1920 && display.bounds.height === 1080) {
      primaryDisplay = display;
      break;
    }
  }
  // 获取屏幕的位置和尺寸
  const { x, y } = primaryDisplay.bounds;
  // 创建浏览器
  win = new BrowserWindow({
    width: 1920,           // 设置窗口宽度为 1920
    height: 1080,          // 设置窗口高度为 1080
    x, y,                  // 设置窗口的位置
    webPreferences: {
      nodeIntegration: true,
    },
    autoHideMenuBar: true,  // 隐藏菜单栏
    // frame: false,          // 隐藏默认的窗口框架（即状态栏和标题栏）
    fullscreen: true,       // 启用全屏模式
    show: false, // 在加载完页面前不显示窗口
    icon: path.join(__dirname, 'icon.ico'),  // 设置窗口图标
  });

  // 使用配置文件中的 url
  win.loadURL('http://localhost:5173');
  // 隐藏默认菜单栏
  win.setMenu(null); // 设置为空菜单栏
  // 打开开发者工具
  win.webContents.openDevTools({ mode: 'detach' }); // 'detach'模式会将控制台变成独立窗口
  // 当窗口加载完毕后显示窗口
  win.once('ready-to-show', () => {
    win.show();
    win.maximize();  // 窗口最大化
  });

  // 当窗口关闭时
  win.on('closed', () => {
    win = null;
  });

  // 定义右键菜单
  const contextMenu = new Menu();
  contextMenu.append(new MenuItem({
    label: '刷新',
    click: () => {
      win.reload();  // 刷新页面
    }
  }));
  contextMenu.append(new MenuItem({
    label: '打开控制台',  // 添加"打开控制台"选项
    click: () => {
      win.webContents.openDevTools({ mode: 'detach' });  // 打开控制台
    }
  }));

  // 监听右键点击事件
  win.webContents.on('context-menu', (e, params) => {
    contextMenu.popup(win, params.x, params.y);  // 在点击的位置显示菜单
  });
}

app.whenReady().then(() => {
  // 确保只有一个实例在运行
  const gotTheLock = app.requestSingleInstanceLock();
  if (!gotTheLock) {
    app.quit();
    return;
  }

  // 如果有第二个实例启动时，聚焦到已打开的窗口
  app.on('second-instance', (event, commandLine, workingDirectory) => {
    // 如果窗口已创建并且没有关闭，则聚焦到该窗口
    if (win) {
      if (win.isMinimized()) win.restore();
      win.focus();
    }
  });
  createWindow();

  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
});

// 在所有窗口关闭时退出应用
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});
